function [ momTerm3 ] = GenerateMoM_Term3( ...
	faceCount, faceTetraIndex, ...
	I3VV, I3VS, I3SV, I3SS, ...
	C31, C32, C33, C34 ...
)
	% m = which row, n = which col
	
	momTerm3 = zeros( faceCount, faceCount );
	
	for idFaceM = 1 : faceCount
		for idFaceN = 1 : faceCount
			
			idTetraM1 = faceTetraIndex( 1, idFaceM );
			idTetraM2 = faceTetraIndex( 2, idFaceM );
			
			idTetraN1 = faceTetraIndex( 1, idFaceN );
			idTetraN2 = faceTetraIndex( 2, idFaceN );
			
			isSingleM = idTetraM2 == -1;
			isSingleN = idTetraN2 == -1;
			
			% C31( n, b )
			% C32( n )
			% C33( m, a, n, b )
			% C34( m, a, n )
			
% 			C31( idFaceN, 1 )
% 			C32( idFaceN )
% 			C33( idFaceM, 1, idFaceN, 1 )
% 			C34( idFaceM, a, idFaceN )
			
			if( ~isSingleM && ~isSingleN )
				
				momTerm3( idFaceM, idFaceN ) = ...
					+ C33( idFaceM, 1, idFaceN, 1 ) * I3VV( idTetraM1, idTetraN1 ) ...
					- C33( idFaceM, 1, idFaceN, 2 ) * I3VV( idTetraM1, idTetraN2 ) ...
					+ C34( idFaceM, 1, idFaceN ) * I3VS( idTetraM1, idFaceN ) ...
					- C33( idFaceM, 2, idFaceN, 1 ) * I3VV( idTetraM2, idTetraN1 ) ...
					+ C33( idFaceM, 2, idFaceN, 2 ) * I3VV( idTetraM2, idTetraN2 ) ...
					- C34( idFaceM, 2, idFaceN ) * I3VS( idTetraM2, idFaceN ) ...
				;
				
			elseif( ~isSingleM && isSingleN )
				
				momTerm3( idFaceM, idFaceN ) = ...
					+ C33( idFaceM, 1, idFaceN, 1 ) * I3VV( idTetraM1, idTetraN1 ) ...
					+ C34( idFaceM, 1, idFaceN ) * I3VS( idTetraM1, idFaceN ) ...
					- C33( idFaceM, 2, idFaceN, 1 ) * I3VV( idTetraM2, idTetraN1 ) ...
					- C34( idFaceM, 2, idFaceN ) * I3VS( idTetraM2, idFaceN ) ...
				;
					
			elseif( isSingleM && ~isSingleN )
				
				momTerm3( idFaceM, idFaceN ) = ...
					- C31( idFaceN, 1 ) * I3SV( idFaceM, idTetraN1 ) ...
					+ C33( idFaceM, 1, idFaceN, 1 ) * I3VV( idTetraM1, idTetraN1 ) ...
					+ C31( idFaceN, 2 ) * I3SV( idFaceM, idTetraN2 ) ...
					- C33( idFaceM, 1, idFaceN, 2 ) * I3VV( idTetraM1, idTetraN2 ) ...
					- C32( idFaceN ) * I3SS( idFaceM, idFaceN ) ...
					+ C34( idFaceM, 1, idFaceN ) * I3VS( idTetraM1, idFaceN ) ...
				;
					
			elseif( isSingleM && isSingleN )
				
				momTerm3( idFaceM, idFaceN ) = ...
					- C31( idFaceN, 1 ) * I3SV( idFaceM, idTetraN1 ) ...
					+ C33( idFaceM, 1, idFaceN, 1 ) * I3VV( idTetraM1, idTetraN1 ) ...
					- C32( idFaceN ) * I3SS( idFaceM, idFaceN ) ...
					+ C34( idFaceM, 1, idFaceN ) * I3VS( idTetraM1, idFaceN ) ...
				;
				
			end
			
		end
	end
	
	
end

